#include "mdpdialog.h"
#include "ui_mdpdialog.h"

MdpDialog::MdpDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MdpDialog)
{
    ui->setupUi(this);

    setWindowFlags(Qt::Dialog);

    //Création des claviers

    Clavier *c = new Clavier(this);
    ClavNum *p = new ClavNum(false,this);

    //Activation de la touche MAJ (désactivées en temps normal hors du mode admin
    c->ajouterMaj();

    ui->horizontalLayout->addWidget(c);
    ui->horizontalLayout->addWidget(p);

    //Déplacement du focus sur la zone de text
    ui->lineEdit->setFocus();
}

MdpDialog::~MdpDialog()
{
    delete ui;
}


bool MdpDialog::mdp(QWidget *parent, QString mot)
{
    //Méthode statique donc on crée la fenetre
    MdpDialog *d = new MdpDialog(parent);
    //On lui donne un titre
    d->setWindowTitle("Administrateur");
    if(d->exec() == QDialog::Accepted){
        if(QVariant(QCryptographicHash::hash(d->ui->lineEdit->text().toUtf8(),QCryptographicHash::Sha1)).toString() == mot){
            // Si le mot de passe est valide, on détruit la fenetre et on retourne vrai
            delete d;
            return true;
        }
    }
    // Sinon, on détruit la fenetre et on retourne faux
    delete d;
    return false;
}

QString MdpDialog::nouveau(QWidget *parent)
{
    //Methode qui retourne simplement la chaine de caractère entrée
    MdpDialog *d = new MdpDialog(parent);
    d->setWindowTitle("Nouveau mot de passe");
    d->ui->label->setText("Entrez le nouveau mot de passe :");
    if(d->exec() == QDialog::Accepted){
        QString s = d->ui->lineEdit->text();
        delete d;
        return QVariant(QCryptographicHash::hash(s.toUtf8(),QCryptographicHash::Sha1)).toString();
    }
    delete d;
    return "";
}

QString MdpDialog::mot(QWidget *parent, QString titre, QString text)
{
    //Methode qui retourne simplement la chaine de caractère entrée
    MdpDialog *d = new MdpDialog(parent);
    d->setWindowTitle(titre);
    d->ui->label->setText(text);
    d->ui->lineEdit->setEchoMode(QLineEdit::Normal);
    if(d->exec() == QDialog::Accepted){
        QString s = d->ui->lineEdit->text();
        delete d;
        return s;
    }
    delete d;
    return "";
}
